home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 25 / AACD 25.iso / AACD / Graphics / PerfectPaint / rexx / Anim / Operators / Mosaic < prev    next >
Encoding:
Text File  |  2001-03-31  |  1.4 KB  |  95 lines

  1. /* Effect Operators Mosaic
  2. 000
  3. */
  4.  
  5.     call addlib("rexxmathlib.library", 5, -30, 0)
  6.  
  7.     options results
  8.  
  9.     parse ARG Port Opt1 Opt2 Opt3 s0 t0 s1 t1 b
  10.     
  11.     ADDRESS value Port
  12.  
  13.     pp_GetWidth
  14.     w=result
  15.     pp_GetHeight
  16.     h=result
  17.     pp_GetDepth
  18.     D=result
  19.  
  20.         pp_ComposeReqOff        
  21.         pp_GetCurrentBrush
  22.         CB=result
  23.         pp_FindEmptyBrush
  24.         Brush=result
  25.         pp_SetBrush Brush
  26.         pp_GotoFrame s1
  27.         pp_PicttoSpare
  28.         pp_GotoFrame s0            
  29.         pp_Pickbrush 0 0 W H
  30.  
  31.         step=(s1-s0)
  32.         Step_f0=30/Step
  33.  
  34.         pp_Compose 0 100 0    
  35.         pp_EffectOn
  36.         do i=s0 to s1
  37.             IF t1=1 then DO
  38.                 pp_GotoFrame (s1+i-s0)
  39.                 pp_PicttoSpare
  40.             END
  41.             pp_GotoFrame i
  42.             f0=Step_f0*(i-s0)
  43.             IF t0=0 then DO
  44.                 pp_EffectOff
  45.                 pp_Plot W/2 H/2
  46.                 pp_EffectOn
  47.             END
  48.             f0=trunc(f0+0.5,0)
  49.             if f0>1 then DO            
  50.                 pp_Mosaic f0
  51.                 pp_boxf 0 0 W H                
  52.             END
  53.         END
  54.  
  55.         Step_f=100/Step
  56.         Step_f0=-30/Step
  57.  
  58.         pp_GotoFrame s0
  59.         pp_SpareOnOff
  60.         pp_PickBrush 0 0 W H
  61.         pp_SpareOnOff
  62.  
  63.         do i=s0 to s1
  64.             IF t1=1 then DO
  65.                 pp_GotoFrame (s1+(s0-i))
  66.                 pp_pickbrush 0 0 W H
  67.             END
  68.             pp_GotoFrame i
  69.             pp_SpareOnOff
  70.             pp_EffectOff
  71.             pp_Plot W/2 H/2
  72.             pp_EffectOn
  73.             f0=30+Step_f0*(i-s0)
  74.             f=Step_f*(i-s0)
  75.             pp_Compose 0 100 0
  76.             f0=trunc(f0+0.5,0)
  77.             if f0>1 then DO
  78.                 pp_Mosaic f0
  79.                 pp_boxf 0 0 W H
  80.             END
  81.             pp_SpareOnOff
  82.             pp_Spare
  83.             pp_Compose 0 f 0
  84.             pp_boxf 0 0 W H            
  85.         END            
  86.  
  87.         pp_Gotoframe s0
  88.         pp_FreeBrush
  89.         pp_SetBrush CB
  90.  
  91.         pp_EffectOff
  92.         pp_ComposeReqOn    
  93.  
  94.     EXIT
  95.